use crate::model::{Alias, ServerProxy};

// 在 traits/vite_config_trait.rs 中定义 trait
pub trait ViteConfigTrait {
    /// 初始化服务器节点
    fn init_server_node(&mut self) -> Result<(), Box<dyn std::error::Error>>;

    /// 初始化解析节点
    fn init_resolve_node(&mut self) -> Result<(), Box<dyn std::error::Error>>;

    /// 初始化根节点
    fn init_root_node(&mut self, node_name: &str) -> Result<(), Box<dyn std::error::Error>>;

    /// 初始化别名节点
    fn init_alias_node(&mut self) -> Result<(), Box<dyn std::error::Error>>;

    /// 初始化代理节点
    fn init_proxy_node(&mut self) -> Result<(), Box<dyn std::error::Error>>;

    /// 插入代理定义
    fn insert_proxy(&mut self, proxy_def: &ServerProxy) -> Result<(), Box<dyn std::error::Error>>;

    /// 插入别名定义
    fn insert_alias(&mut self, alias_def: &Alias) -> Result<(), Box<dyn std::error::Error>>;
}
